home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 April: Mac OS SDK / Dev.CD Apr 97 SDK1.toast / Development Kits (Disc 1) / PC Card Manager / CIncludes / Timing.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-01-13  |  3.8 KB  |  141 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        Timing.h
  3.  
  4.      Contains:    Kernel Timing Interfaces.
  5.  
  6.      Version:    System 8
  7.  
  8.      DRI:        Jeff Robbin
  9.  
  10.      Copyright:    © 1984-1996 by Apple Computer, Inc.
  11.                  All rights reserved.
  12.  
  13.      Warning:    *** APPLE INTERNAL USE ONLY ***
  14.                  This file may contain unreleased API's
  15.  
  16.      BuildInfo:    Built by:            SuperMario Build Daemon
  17.                  With Interfacer:    2.0d10   (PowerPC native)
  18.                  From:                Timing.i
  19.                      Revision:        18
  20.                      Dated:            1/19/96
  21.                      Last change by:    JLR
  22.                      Last comment:    Add AbsoluteTimeToTicks.
  23.  
  24.      Bugs:        Report bugs to Radar component “System Interfaces”, “Latest”
  25.                  List the version information (from above) in the Problem Description.
  26.  
  27. */
  28. #ifndef __TIMING__
  29. #define __TIMING__
  30.  
  31. #ifndef __TYPES__
  32. #include <Types.h>
  33. #endif
  34.  
  35. #ifdef __cplusplus
  36. extern "C" {
  37. #endif
  38.  
  39. #if PRAGMA_IMPORT_SUPPORTED
  40. #pragma import on
  41. #endif
  42.  
  43. #if PRAGMA_ALIGN_SUPPORTED
  44. #pragma options align=power
  45. /* the following contents can only be used by compilers that support PowerPC struct alignment */
  46.  
  47. #if FOR_SYSTEM8_PREEMPTIVE
  48.  
  49. enum {
  50.     kDurationMicrosecond        = -1L,                            /* Microseconds are negative */
  51.     kDurationMillisecond        = 1L,                            /* Milliseconds are positive*/
  52.     kDurationSecond                = 1000L,                        /* 1000 * durationMillisecond*/
  53.     kDurationMinute                = 60000L,                        /* 60 * durationSecond,*/
  54.     kDurationHour                = 3600000L,                        /* 60 * durationMinute,*/
  55.     kDurationDay                = 86400000L,                    /* 24 * durationHour,*/
  56.     kDurationNoWait                = 0L,                            /* don't block*/
  57.     kDurationForever            = 0x7FFFFFFF                    /* no time limit*/
  58. };
  59.  
  60. #if OLDROUTINENAMES
  61.  
  62. enum {
  63.     durationMicrosecond            = kDurationMicrosecond,
  64.     durationMillisecond            = kDurationMillisecond,
  65.     durationSecond                = kDurationSecond,
  66.     durationMinute                = kDurationMinute,
  67.     durationHour                = kDurationHour,
  68.     durationDay                    = kDurationDay,
  69.     durationNoWait                = kDurationNoWait,
  70.     durationForever                = kDurationForever
  71. };
  72.  
  73. #endif
  74. typedef UInt64 Nanoseconds;
  75. typedef UInt32 Ticks;
  76. /*
  77.     Time Information Routines
  78. */
  79. extern AbsoluteTime UpTime(void );
  80.  
  81. extern AbsoluteTime TaskCPUTime(void );
  82.  
  83. extern void GetTimeBaseInfo(UInt32 *theMinAbsoluteTimeDelta, UInt32 *theAbsoluteTimeToNanosecondNumerator, UInt32 *theAbsoluteTimeToNanosecondDenominator, UInt32 *theProcessorToAbsoluteTimeNumerator, UInt32 *theProcessorToAbsoluteTimeDenominator);
  84.  
  85. /*
  86.     Timing Conversion Routines
  87. */
  88. extern Nanoseconds AbsoluteToNanoseconds(AbsoluteTime theAbsoluteTime);
  89.  
  90. extern Duration AbsoluteToDuration(AbsoluteTime theAbsoluteTime);
  91.  
  92. extern AbsoluteTime NanosecondsToAbsolute(Nanoseconds theNanoseconds);
  93.  
  94. extern AbsoluteTime DurationToAbsolute(Duration theDuration);
  95.  
  96. extern Nanoseconds DurationToNanoseconds(Duration theDuration);
  97.  
  98. extern Duration NanosecondsToDuration(Nanoseconds theNanoseconds);
  99.  
  100. extern Ticks AbsoluteToTicks(AbsoluteTime theAbsoluteTime);
  101.  
  102. extern AbsoluteTime TicksToAbsolute(Ticks theTicks);
  103.  
  104. /*
  105.     AbsoluteTime Adjustment Routines
  106. */
  107. extern AbsoluteTime AddAbsoluteToAbsolute(AbsoluteTime theAbsoluteTime1, AbsoluteTime theAbsoluteTime2);
  108.  
  109. extern AbsoluteTime SubAbsoluteFromAbsolute(AbsoluteTime theLeftAbsoluteTime, AbsoluteTime theRightAbsoluteTime);
  110.  
  111. extern AbsoluteTime AddNanosecondsToAbsolute(Nanoseconds theNanoseconds, AbsoluteTime theAbsoluteTime);
  112.  
  113. extern AbsoluteTime AddDurationToAbsolute(Duration theDuration, AbsoluteTime theAbsoluteTime);
  114.  
  115. extern AbsoluteTime SubNanosecondsFromAbsolute(Nanoseconds theNanoseconds, AbsoluteTime theAbsoluteTime);
  116.  
  117. extern AbsoluteTime SubDurationFromAbsolute(Duration theDuration, AbsoluteTime theAbsoluteTime);
  118.  
  119. /*
  120.     Timing Delta Routines
  121. */
  122. extern Nanoseconds AbsoluteDeltaToNanoseconds(AbsoluteTime theLeftAbsoluteTime, AbsoluteTime theRightAbsoluteTime);
  123.  
  124. extern Duration AbsoluteDeltaToDuration(AbsoluteTime theLeftAbsoluteTime, AbsoluteTime theRightAbsoluteTime);
  125.  
  126. #endif
  127.  
  128. #pragma options align=reset
  129. #endif /* PRAGMA_ALIGN_SUPPORTED */
  130.  
  131. #if PRAGMA_IMPORT_SUPPORTED
  132. #pragma import off
  133. #endif
  134.  
  135. #ifdef __cplusplus
  136. }
  137. #endif
  138.  
  139. #endif /* __TIMING__ */
  140.  
  141.